本模块通过操控 CanvasRenderingContext2D 状态,从静态路径转向动态、事件驱动的工具。我们重点在于通过 高阶模式 和数学滤波来扩展应用功能。
1. 高阶工具模式
例如 tools.Line 这类工具通过辅助函数(如 trackDrag)抽象鼠标事件。相反地, tools.Spray 则通过 基于时间间隔的重复机制 实现 setInterval,在鼠标按下的过程中持续放置像素。
2. 数学约束
简单的随机偏移会产生方形分布。为了实现自然的圆形“画笔”效果,我们使用勾股定理筛选点:$x^2 + y^2 < r^2$。或者也可以使用极坐标配合 Math.sin 和 Math.cos 进行转换。
3. 复合操作与状态
除了标准描边外, globalCompositeOperation 属性定义了新像素与已有像素之间的交互方式。例如,将其设置为 'destination-out' 可使 tools.Erase 函数将像素变为透明,而不仅仅是涂成白色。用户界面控件如 controls.color 和 controls.brushSize 可实时更新 fillStyle 和 lineWidth 分别。
而
lineCap 属性(例如 'round' 或 'square')控制描边线条末端的形状,对实现流畅绘图至关重要。TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>